home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
crtplu.zip
/
CRTPLUS.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-01-04
|
6KB
|
204 lines
(***********************************************************)
(* *)
(* CrtPlus Unit Revision 1.0 *)
(* (c) 1991 by Modern Solutions. All rights reserved. *)
(* *)
(***********************************************************)
unit CrtPlus;
interface
uses dos;
const
videosegment:word=$b800;
function CGApresent:boolean;
function MDApresent:boolean;
function EGApresent:boolean;
procedure Crt80x43;
procedure Crt80x50;
procedure BlinkingOff;
procedure BlinkingOn;
procedure BlockFill(x1,y1,x2,y2,fc,bc,ascii:integer);
procedure BlockColor(x1,y1,x2,y2,fc,bc:integer);
procedure BlockCopy(x1,y1,x2,y2,x3,y3:integer);
implementation
function CGApresent:boolean;
var
localCGApresent:boolean;
begin
inline($ba/$d4/$03/$f8/$b0/$0f/$ee/$42/$ec/$8a/$e0/$b0/$66/$ee/$b9/
$00/$01/$e2/$fe/$ec/$86/$e0/$ee/$80/$fc/$66/$74/$01/$f9/$72/
$09/$c7/$86/localCGApresent/$01/$00/$eb/$07/$90/$c7/$86/
localCGApresent/$00/$00);
CGApresent:=localCGApresent;
end;
function MDApresent:boolean;
var
localMDApresent:boolean;
begin
inline($ba/$b4/$03/$f8/$b0/$0f/$ee/$42/$ec/$8a/$e0/$b0/$66/$ee/$b9/
$00/$01/$e2/$fe/$ec/$86/$e0/$ee/$80/$fc/$66/$74/$01/$f9/$72/
$09/$c7/$86/localMDApresent/$01/$00/$eb/$07/$90/$c7/$86/
localMDApresent/$00/$00);
MDApresent:=localMDApresent;
end;
function EGApresent:boolean;
var
localEGApresent:boolean;
begin
inline($32/$d2/$b4/$12/$b3/$10/$cd/$10/$80/$fb/$10/$74/$07/$80/$fb/
$00/$74/$02/$b2/$01/$8a/$c2/$32/$e4/$89/$86/localEGApresent);
EGApresent:=localEGApresent;
end;
procedure Crt80x43;
begin
inline($b8/$03/$00/$cd/$10/$b8/$12/$11/$b3/$00/$cd/$10/$b8/$40/$00/
$8e/$c0/$26/$8b/$16/$63/$00/$b8/$0a/$06/$ef/$b8/$0b/$00/$ef/
$b4/$12/$b3/$20/$cd/$10);
end;
procedure Crt80x50;
begin
inline($b8/$02/$12/$b3/$30/$cd/$10/$b8/$03/$00/$cd/$10/$b8/$12/$11/
$b3/$00/$cd/$10);
end;
procedure BlinkingOff;
var
regs:registers;
begin
if egapresent then
with regs do
begin
ax:=$1003;
bl:=0;
intr($10,regs);
end
else
inline($b8/$40/$00/$8e/$c0/$26/$8b/$16/$63/$00/$80/$c2/$04/$26/$a0/
$65/$00/$24/$df/$ee/$26/$a2/$65/$00);
end;
procedure BlinkingOn;
var
regs:registers;
begin
if egapresent then
with regs do
begin
ax:=$1003;
bl:=1;
intr($10,regs);
end
else
inline($b8/$40/$00/$8e/$c0/$26/$8b/$16/$63/$00/$80/$c2/$04/$26/$a0/
$65/$00/$0c/$20/$ee/$26/$a2/$65/$00);
end;
function ColortoAttribute(fc,bc:integer):integer;
begin
inline($8b/$9e/fc/$8b/$86/bc/$bf/$10/$00/$f7/$e7/$83/$fb/$10/
$7c/$06/$05/$80/$00/$83/$eb/$10/$03/$c3/$89/$86/colortoattribute);
end;
function Locate(x,y:integer):integer;
begin
inline($8b/$be/y/$8b/$b6/x/$4f/$4e/$b8/$50/$00/
$f7/$e7/$03/$c6/$03/$c0/$89/$86/locate);
end;
procedure BlockFill(x1,y1,x2,y2,fc,bc,ascii:integer);
var
upperleft,lowerright,attribute:integer;
begin
upperleft:=locate(x1,y1);
lowerright:=locate(x2,y2);
attribute:=colortoattribute(fc,bc);
inline($fc/$a1/videosegment/$8e/$c0/$8b/$be/upperleft/$8a/$86/
ascii/$8a/$a6/attribute/$8b/$96/x2/$2b/$96/x1/$42/$8b/
$ca/$f3/$ab/$2b/$fa/$2b/$fa/$81/$c7/$a0/$00/$3b/$be/
lowerright/$7e/$ee);
end;
procedure BlockColor(x1,y1,x2,y2,fc,bc:integer);
var
upperleft,lowerright,attribute:integer;
begin
upperleft:=locate(x1,y1);
lowerright:=locate(x2,y2);
inc(upperleft);
inc(lowerright);
attribute:=colortoattribute(fc,bc);
inline($fc/$a1/videosegment/$8e/$c0/$8b/$be/upperleft/$8a/$86/
attribute/$8b/$96/x2/$2b/$96/x1/$42/$8b/$ca/$aa/$47/$e2/
$fc/$2b/$fa/$2b/$fa/$81/$c7/$a0/$00/$3b/$be/lowerright/
$7e/$ec);
end;
procedure BlockCopy(x1,y1,x2,y2,x3,y3:integer);
var
x4,y4,srcupperleft,srclowerleft,srcupperright,srclowerright,
destupperleft,destlowerleft,destupperright,destlowerright:integer;
begin
x4:=x3+(x2-x1);
y4:=y3+(y2-y1);
srcupperleft:=locate(x1,y1);
srclowerleft:=locate(x1,y2);
srcupperright:=locate(x2,y1);
srclowerright:=locate(x2,y2);
destupperleft:=locate(x3,y3);
destlowerleft:=locate(x3,y4);
destupperright:=locate(x4,y3);
destlowerright:=locate(x4,y4);
inline($55/$1e/$8b/$1e/videosegment/$8e/$c3/$8b/$86/x3/$3b/$86/
x1/$7f/$70/$8b/$86/y3/$3b/$86/y1/$7f/$33/$fc/$8b/$b6/
srcupperleft/$8b/$be/destupperleft/$8b/$96/x2/$2b/$96/
x1/$42/$8b/$ae/srclowerright/$8e/$db/$8b/$ca/$f3/$a5/
$2b/$f2/$2b/$f2/$2b/$fa/$2b/$fa/$81/$c6/$a0/$00/$81/
$c7/$a0/$00/$3b/$f5/$7e/$e8/$e9/$a0/$00/$fc/$8b/$b6/
srclowerleft/$8b/$be/destlowerleft/$8b/$96/x2/$2b/$96/
x1/$42/$8b/$ae/srcupperleft/$8e/$db/$8b/$ca/$f3/$a5/$2b/
$f2/$2b/$f2/$2b/$fa/$2b/$fa/$81/$ee/$a0/$00/$81/$ef/$a0/
$00/$3b/$f5/$7d/$e8/$eb/$6e/$90/$8b/$86/y3/$3b/$86/y1/
$7f/$33/$fd/$8b/$b6/srcupperright/$8b/$be/
destupperright/$8b/$96/x2/$2b/$96/x1/$42/$8b/$ae/
srclowerright/$8e/$db/$8b/$ca/$f3/$a5/$03/$f2/$03/$f2/
$03/$fa/$03/$fa/$81/$c6/$a0/$00/$81/$c7/$a0/$00/$3b/$f5/
$7e/$e8/$eb/$31/$90/$fd/$8b/$b6/srclowerright/$8b/$be/
destlowerright/$8b/$96/x2/$2b/$96/x1/$42/$8b/$ae/
srcupperleft/$8e/$db/$8b/$ca/$f3/$a5/$03/$f2/$03/$f2/
$03/$fa/$03/$fa/$81/$ee/$a0/$00/$81/$ef/$a0/$00/$3b/$f5/
$7d/$e8/$1f/$5d);
end;
end.